package acm.蓝桥24;

import java.util.Scanner;

public class D_倍数中的最少1 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		long n=sc.nextInt();
		find(n);
//		System.out.println(res);
//		int cnt=(int) 1e3;
//		for(int i=1;i<=cnt;i++) {
//			System.out.print(i+"：");
//			find(i);
//		}
	}
	static int power=(int) 1e8;
	/**
	 * x的一千倍以内有无更少数 
	 */
	public static void find(long x) {
		long ans=x;
		long minCnt=Integer.MAX_VALUE;
		int p=0;
		for(int i=1;i<=power;i++) {
			int cnt=count(i*x);
			if(cnt<minCnt) {
				p=i;
				ans=i*x;
				minCnt=cnt;
			}
		}
		System.out.println(minCnt);
//		if(x==ans) {
//			System.out.println("无");
//			return;
//		}
//		System.out.println("x的个数为："+count(x)+"\t存在："+p+"倍的"+ans+"，1的个数为："+minCnt);
	}
	public static int count(long x) {
		int res=0;
		for(long i=x;i>0;i-=lowbit(i)) {
			res++;
		}
		return res;
	}
	public static long lowbit(long x) {
		return x&-x;
	}
}
